package org.code.google.generator.dataModel;

import java.io.Serializable;
import java.util.List;

import org.code.google.generator.dataModel.actionScriptProperties.Compiler;
import org.code.google.generator.dataModel.actionScriptProperties.LibraryPathEntry;

/**
 * DataModel for the Project concept along the code generation tool
 * 
 * @author Rafael Nami
 * @since 24 Jan 2009
 */
public class Project implements Serializable {

	private static final long serialVersionUID = 1L;

	// name attribute
	private String name;
	// compiler attribute
	private Compiler compiler;
	// defaultLinkType attribute
	private String defaultLinkType;
	// libraryPathEntries attribute
	private List<LibraryPathEntry> libraryPathEntries;

	/**
	 * Default Constructor
	 */
	public Project() {
		super();
	}

	/**
	 * @return the compiler
	 */
	public Compiler getCompiler() {
		return compiler;
	}

	/**
	 * @param compiler
	 *            the compiler to set
	 */
	public void setCompiler(Compiler compiler) {
		this.compiler = compiler;
	}

	/**
	 * @return the name
	 */
	public String getName() {
		return name;
	}

	/**
	 * @param name
	 *            the name to set
	 */
	public void setName(String name) {
		this.name = name;
	}

	/**
	 * @return the libraryPathEntries
	 */
	public List<LibraryPathEntry> getLibraryPathEntries() {
		return libraryPathEntries;
	}

	/**
	 * @return the defaultLinkType
	 */
	public String getDefaultLinkType() {
		return defaultLinkType;
	}

	/**
	 * @param defaultLinkType
	 *            the defaultLinkType to set
	 */
	public void setDefaultLinkType(String defaultLinkType) {
		this.defaultLinkType = defaultLinkType;
	}

	/**
	 * @param libraryPathEntries
	 *            the libraryPathEntries to set
	 */
	public void setLibraryPathEntries(List<LibraryPathEntry> libraryPathEntries) {
		this.libraryPathEntries = libraryPathEntries;
	}

	/**
	 * Method to add a library path entry
	 * 
	 * @param libraryPathEntry
	 *            LibraryPathEntry
	 */
	public void addLibraryPathEntry(LibraryPathEntry libraryPathEntry) {
		this.libraryPathEntries.add(libraryPathEntry);
	}

	/**
	 * Method to remove a library path entry
	 * 
	 * @param libraryPathEntry
	 *            LIbraryPathEntry
	 */
	public void removeLibraryPathEntry(LibraryPathEntry libraryPathEntry) {
		this.libraryPathEntries.remove(libraryPathEntry);
	}
}